home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Tools / MPW / GCC 1.37.1r15 / Tests / Benchmarks / sieve.c < prev    next >
Encoding:
C/C++ Source or Header  |  1989-12-12  |  1.1 KB  |  64 lines  |  [TEXT/MPS ]

  1. /* Benchmark by Dan Allen 10/2/1986, Apple Computer */
  2.  
  3. /*
  4. *
  5. *    NAME
  6. *        sieve - prime number benchmark
  7. *
  8. *    SYNOPSIS
  9. *        sieve 
  10. *
  11. *    DESCRIPTION
  12. *        sieve generates prime numbers via the method after Erathosthenes.
  13. *        It is the standard Byte magazine benchmark.
  14. *        
  15. *    AUTHOR
  16. *        (a)    Tim Field, Byte Magazine, November 1985, p.275f.
  17. *        (B)    Dan Allen & Apple Computer, Inc. 1985,1986.
  18. *
  19. */
  20.  
  21. #include "defns.h"
  22.  
  23. #define TRUE     1
  24. #define FALSE    0
  25. #define SIZE    8190
  26.  
  27. main()
  28. {
  29.         char *flags;
  30.     int iter, count;
  31.     long thetime;
  32.  
  33.     flags = (char *) malloc(SIZE+1);
  34.     thetime = clock();
  35.     for (iter = 1; iter <= 10; iter++)  
  36.     {
  37.         count = sieve(flags);
  38.     }
  39.     thetime = clock() - thetime;
  40.     printf("%d primes found %d times in %d/%d seconds\n",
  41.            count, 10, thetime, CLK_TCK);
  42. }
  43.  
  44. sieve(flags)
  45. char *flags;
  46. {
  47.     int i,prime,k,count;
  48.         
  49.     count = 0;
  50.     for (i=0; i <= SIZE; i++)
  51.       flags[i] = (char) TRUE;
  52.     for (i=0; i <= SIZE; i++)  
  53.       {
  54.           if (flags[i]) 
  55.         {
  56.             prime = i + i + 3;
  57.             for (k = i + prime; k <= SIZE; k += prime)
  58.               flags[k] = FALSE;
  59.             count ++;
  60.         }
  61.       }
  62.     return count;
  63. }
  64.